﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using _1.Presentacion.Utilidades;
using _2.Logica.Seguirdad;
using _4.Modelado.Seguridad;
using _1.Presentacion.Principal;

namespace _1.Presentacion.Modulo_Seguridad
{
    public partial class Gestionar_Areas : Päntalla_Base
    {
        public Gestionar_Areas()
        {
            InitializeComponent();
        }
        
        private void Gestionar_Areas_Load(object sender, EventArgs e)
        {
            CargaGridArea();
            Validaciones.CargarUsuarioLogueado(lbl_Usuario, lbl_Fecha);
        }

     

        public void CargaGridArea()
        {
            try
            {
                var logica = new AreaL();

                List<Area> listaArea = logica.AreasConsultar();
                //Recorre la lista de Usuarios para asignar a cada celda del Datagrid
                //Los valores devueltos por la consulta
                dgvArea.Rows.Clear();
                for (int i = 0; i < listaArea.Count; i++)
                {
                    dgvArea.Rows.Add();
                    dgvArea.Rows[i].Cells[0].Value = listaArea[i].iPKArea;
                    dgvArea.Rows[i].Cells[1].Value = listaArea[i].sAreaDescripcion;
                  
                }

            }
            catch (Exception exc)
            {
               
                MessageBox.Show("Eror al cargar la lista de Áreas " + exc, "Error", MessageBoxButtons.OKCancel);
            }
        }


      
        private void dgvArea_DoubleClick(object sender, EventArgs e)
        {
            int indicefila = dgvArea.SelectedCells[0].RowIndex;
            txtPKArea.Text = dgvArea.Rows[indicefila].Cells[0].Value.ToString();
            txtAreaDescripcion.Text = dgvArea.Rows[indicefila].Cells[1].Value.ToString();
        }

     
        private void P_Limpiar()
        {
            txtAreaDescripcion.Clear();
            txtPKArea.Text ="0";
         }

      

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            try
            {
                if (dgvArea.RowCount > 0)
                {
                    int indiceFila = dgvArea.SelectedCells[0].RowIndex;
                    string sDescripcion = dgvArea[1, indiceFila].Value.ToString();
                    

                    #region Elimina Area

                    DialogResult r = MessageBox.Show("Desea eliminar el área: " + sDescripcion, "Validaciones",
                                                     MessageBoxButtons.OKCancel,MessageBoxIcon.Question);

                    if (r == DialogResult.OK)
                    {
                        var obj = new Area();
                        obj.iPKArea = Convert.ToInt32(dgvArea.Rows[indiceFila].Cells[0].Value);

                        var logica = new AreaL();
                        logica.AreaEliminar(obj);
                        CargaGridArea();
                       //Limpiar caja de Texto siempre????
                        if (txtPKArea.Text == obj.iPKArea.ToString() && txtAreaDescripcion.Text == sDescripcion)
                        {
                            P_Limpiar();
                        }
     
                    }

                    #endregion
                }
            }
            catch (Exception exc)
            {
                if (exc.Message.Contains("conflicted with"))
                {
                    MessageBox.Show("No se pudo eliminar el registro, tiene información relacionada ", "Error", MessageBoxButtons.OK);
                }
                else
                    MessageBox.Show("No se pudo eliminar el registro " + exc, "Error", MessageBoxButtons.OK);

                
            }
 }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            try
            {
                if (txtAreaDescripcion.Text != string.Empty || txtPKArea.Text != string.Empty)
                {
                    var obj = new Area();
                    obj.sAreaDescripcion = txtAreaDescripcion.Text;
                    obj.iPKArea = Convert.ToInt32(txtPKArea.Text);
                    var logica = new AreaL();
                    logica.AreaGuardar(obj);
                    CargaGridArea();
                    P_Limpiar();
                    MessageBox.Show("El registro ha sido guardado", "Transacción", MessageBoxButtons.OK, MessageBoxIcon.Information);
                   
                }
                else
                {
                    MessageBox.Show("Debe llenar los campos requeridos" , "Validaciones", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                
            
        }
            catch (Exception exc)
            {
                MessageBox.Show("Se produjo un error al guardar los datos" + exc, "Error", MessageBoxButtons.OK);
            }

          
        }

   

        private void txtAreaDescripcion_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                btnGuardar_Click(sender, e);
            }
        }

        private void btnNuevo_Click(object sender, EventArgs e)
        {
            P_Limpiar();
        }

        private void btnHom_Click(object sender, EventArgs e)
        {
            this.WindowState = FormWindowState.Minimized;
        }

        private void lbl_Usuario_Click(object sender, EventArgs e)
        {
        
        }

        private void lbl_Fecha_Click(object sender, EventArgs e)
        {
        
        }

        }

      
    }
        
    

